GNU Chess is your program (as long as you follow the copyright and licensing rules listed in the file COPYING). Your contributions inspire current and future software developers.
This document is not meant to be an introduction to computer chess. The following books are excellent introductions and treatises. They are listed in order of difficulty:
Computer Chess (2nd edition), by David Welsh and Boris Bazcynski
The Joy of Computer Chess, by David Levy
Chess Skill in Man and Machine (2nd edition), by Peter Frey
The most recent distribution of GNU Chess contains the following main-level files and directories:
README Pointer to main README below
gnuchess.c Most recent version of GNU Chess
nondsp.c Non-display interface, and chesstool/xchess interface
uxdsp.c Unix (curses) display interface
ansidsp.c ANSI display interface
gnuchess.book Most recent version of opening book
________________________________________________
GNU Chess is a communal chess program. Contributors donate their time and effort in order to make it a stronger, better, sleeker program. Contributions take many forms: interfaces to high-resolution displays, opening book treatises, speedups of the underlying algorithms, additions of extra heuristics. These contributions are then distributed to the large user-base so that all may enjoy the fruits of our labor. The original and continuing purpose of this project is to permanently end the rampant hoarding of computer chess software that has been the case for the past 20 years.
Many people have contributed to GNU Chess. Their contributions have improved the program from being a patzer (weak program) to being a grandpatzer (decently strong program). In its growth since initial release, GNU Chess has gone from approximately class D to strong master strength. It beats the Fidelity Mach 3 (USCF 2265) rather handily when run on a Sparc-1 (RISC). Since these types of RISC chips are becoming fairly common, the age of ╥master chess in your computer lab╙ is now a reality. From there, it will be a short hop to master chess in your home with FSF software.
GNU Chess╒s structure is a hybrid of the Shannon Type-A and Type-B methods. It conducts a full-width search to a fixed-depth and then continues with a quiescence search for many more ply. This quiescence search helps the program find positions which can be safely evaluated and which are not too turbulent. If a terminal position is too turbulent, the evaluation will be highly inaccurate. Additional searching by investigating series of captures, checks, and other potentially imbalance-producing moves is quite helpful.
GNU Chess will sacrifice pieces in order to reach known winning endings. Also, it uses a trade-down bonus to encourage the stronger side to trade off certain types of pieces thus reaching a more simplified and therefore ostensibly ╥clearer╙ position.
GNU Chess has certain types of knowledge regarding easier endgames. This allows it to play these endings somewhat better than might be expected.
GNU Chess has time heuristics that it uses to improve its handling of time-controls and hasten its making of ╥obvious╙ moves. It also thinks on the opponent╒s time.
GNU Chess is interfaced to the SUN Windows and X Windows display protocols and can display its pieces in elaborate format, similar to chess diagrams.
GNU Chess has an opening book which consists of many variations from MCO (Modern Chess Openings), and some from ECO.
For comparison purposes, GNU Chess running on a VAX 8650 is stronger than the famous Chess 4.5 running on a CDC 6400. On a Sparc-1, GNU 1.55 (or later) is probably about 2350-2400 strength (USCF rating estimated).
We wish to acknowledge the contributions of the following individuals: (in alphabetical order) Jim Aspnes, Wayne Christopher, Steve Dougherty, David Goldberg, Richard Greenblatt, Larry Kaufman, David Kittinger, Hans-Erik Sandstrom, Richard Stallman, John Stanback, Ken Thompson.
Contact information: The author may be reached by a variety of methods. Via U.S. mail: Stuart Cracraft, P.O. Box 2841, Laguna Hills, Ca. 92654-2841. Via Email: cracraft@wheaties.ai.mit.edu The author may also be contacted via the Free Software Foundation, Inc. 675 Massachusetts Ave., Cambridge MA 02139.
________________________________________________
GNU Chess: Experiences Learned with Communal Sharing
by Stuart Cracraft (and contributors to the GNU Project)
Limited sharing has characterized the computer chess community for the past two decades. Occasional research articles give hints and suggestions for useful features, but rarely reveal the real details of the critically important advances. We will here describe an effort underway (titled ╥GNU Chess╙) to create a more open and friendly environment of sharing.
GNU Chess is part of Project GNU, a large-scale effort in which the philosophical goals are far-reaching. We will not go into any great depth about these goals as they relate to the larger project, because these are described elsewhere [1]. However, we will mention the basic issues and the changes we hope to encourage.
The start of the GNU Chess project was a natural result of the experiences gleaned in writing a chess program. While the author was at a progressive academic location [2], he was able to conceive the idea of a communal chess program only after much heartache. During the period of writing the initial version (which has since undergone many improvements and whole revisions), it became clear that the best features and most useful hints, the very best of the heuristics, were hidden and difficult to find in the literature.
Sprinkled across many books, research papers, magazine articles, accumulated in the community, during the past 25 years, there was literally a void of true, empirical programs. Locating usable programs was difficult. Many programs were the result of academic work in ╥ivory towers╙, and hence were inaccessible to the common man. Other programs were sequestered in research think-tanks. Naturally, developers of commercial programs carefully guarded their source in order to protect their investment. On the other hand, a few chess program source listings had actually been published, but these were not really very strong, often written in a non-general language, and frequently more pedantic than practical.
The idea of a reasonably strong communal program solidified. When we refer to a communal program, we do not regard this as public-domain software. Rather, we refer to a program which is under the shared authority of a number of individuals, the principal contributors. These individuals have experienced and realized the positive results of a sharing community and the rapid improvements that come through contributing in such a community. Further, these individuals devote time and energy to coordinating the contributions of other individuals. While they exercise a certain editorial right, this is usually not exercised arbitrarily; instead, a discussion is often undertaken.
Eventually, a working C program that played chess was available. The coordinating institution for Project GNU, accepted our suggestion of inclusion of a chess program in the GNU distribution. Initial distribution of GNU Chess commenced in October of 1986. Interest in the project increased rapidly.
Contributions came in from many places and people. Interfaces to X-windows and SUN-windows were donated, thus allowing very fancy chess fonts on bit-mapped screens. Also, contributions involving large portions of opening books such as MCO and collections of master games were added to the distribution. Additionally, tree-search modifications and heuristics were provided, and occasionally even entire rewrites.
The program advanced in strength by several USCF class intervals during a period of less than one year. During this time, many unusual features and enhancements were added to the program, usually under the coordination of two or more people, with one working in a distant-advisory capacity to the other. Frequently, graduate students would give up significant time from their thesis work to devote energy to contributing. Their corporate counterparts would often give up project time to make their donation.
Contributors would often enter the project in a very forceful way and then having made their contribution, learn the viability of communal sharing once others had stepped in and contributed to them, thus providing considerable reinforcement. Frequently, contributors would then go into ╥hibernation╙ for a long period of time, but most of them remained open to contributing and were helpful when asked to reprogram their particular contribution in a more recent version.
GNU Chess has made great strides in relatively little time. It has run on many different hardware architectures and has been compiled by a number of C compilers. A sampling of the computers on which the program has run is: National 32032, Vax 11/750, 8550, 8600, 8650, Motorola 68020, CCI 5/32, CCI 6/32 (tahoe), Cray XMP, SUN Sparc-1.
It is our belief that GNU Chess will stimulate graduate research in computer chess theory and practice. When students are able to easily obtain a state-of-the-art program in order to test out their ideas, they will no longer need to reinvent the wheel. The students will be able to investigate their research areas much more thoroughly, because they will spend more time on the specific research areas they are concerned about. Basically, GNU Chess ╥frees up╙ time in order to get on to more fundamental issues.
We also feel that as other researchers gain trust in the GNU Chess project, they will be more likely to release their results directly and rapidly, through journal articles, or directly to the GNU project, and in fact become contributors and join the present list. At the very least, a communal, ever-growing program will encourage the few ╥closeted╙ researchers to be somewhat more open in their approach to disseminating advances.
In whatever form it takes, the progress toward elaboration of machine chess is ongoing, and we hope that GNU chess will be helpful to the community. Copies of GNU Chess source and ╥book╙, as well as additional experimental code are available from the Free Software Foundation [3] or the author [4].
[1] The GNU Manifesto, Richard Stallman, Free Software Foundation, Inc.
[2] University of Southern California, Information Sciences Institute.
[3] Free Software Foundation, Inc. 675 Massachusetts Ave., Cambridge MA 02139.
[4] Stuart Cracraft, P.O. Box 2841, Laguna Hills, California. 92654-2841.,